重磅官宣:Redis OM 发布,Redis 对象映射框架来了!!
点击关注公众号,Java干货及时送达
Redis OM
前几天,Redis 发布了对象映射框架:Redis OM,即:Object Mapping,不过目前它还是预览版。
当然,Redis OM 的横空出世不仅仅是对象映射,它更多的是提供一个高级的抽象类库,目标就是让开发人员更简单、方便的使用 Redis 数据。
Redis OM 支持的第一个抽象就是:对象映射,支持基于对象的 Redis 数据持久化、流式查询操作。
目前只支持 4 种开发语言:
Redis OM for Spring(Java) Redis OM for .NET Redis OM for Node.js Redis OM for Python
相信后续会支持更多语言。
Redis OM for Spring
Redis OM for Spring 是对咱们 Java 的支持的对象映射类库。
栈长看了官方仓库源码说明,它其实就是扩展了 Spring Data Redis,可以提供更好的数据搜索、文档模型等,可以理解为 MyBatis-plus 和 MyBatis 的关系,相辅相成的。
快速开始
Redis OM 可以和 Spring Boot 快速集成。
Maven 依赖:
<dependency>
<groupId>com.redis.om.spring</groupId>
<artifactId>redis-om-spring</artifactId>
<version>${version}</version>
</dependency>
Spring Boot 配置:
@SpringBootApplication
@Configuration
@EnableRedisDocumentRepositories(basePackages = "cn.javastack.documents.*")
public class RdsDocumentsApplication {
public static void main(String[] args) {
SpringApplication.run(RdsDocumentsApplication.class, args);
}
}
使用 @EnableRedisDocumentRepositories
注释扫描 @Document
注解的 Spring 模型,通过注入实现 RedisDocumentRepository
的 repositories bean,后面就可以进行 CRUD 和自定义查询操作了。
Spring Boot 基础就不介绍了,学习笔记分享给你,实战仓库源码:https://github.com/javastacks/spring-boot-best-practice
对象模型映射
Redis OM 也是通过注解的方式映射对象模型,如下面示例:
/**
* 商户操作仓库
* 作者:栈长
* 来源公众号:Java技术栈
*/
@Data
@RequiredArgsConstructor(staticName = "of")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Document
public class Merchant {
@Id
private String id;
@Searchable
private String name;
@Indexed
private Point location;
@Indexed
private Set<String> sites = new HashSet<String>();
@Indexed
private Integer numberOfEmployees;
@Indexed
private Integer yearFounded;
private String url;
private boolean publiclyListed;
// ...
}
注解说明:
@Document: 将 Spring Data 模型映射到 Redis JSON 文档; @Id: 使用 ULID 取代传统的 UUID 主键生成策略,生成速度更快、更易用; @Searchable: 声明全文搜索索引; @Indexable: 声明索引;
定义仓库
Spring Data Redis 这里就不详细介绍了,栈长之前写过一些,不会用的可以关注公众号:Java技术栈,在公众号菜单栏中阅读,栈长都已经整理好了。
使用 Repository 仓库也很简单,继承 RedisDocumentRepository 就行了:
/**
* 商户操作仓库
* 作者:栈长
* 来源公众号:Java技术栈
*/
public interface MerchantRepository extends RedisDocumentRepository<Merchant, String> {
// 查找单个商户
Optional<Merchant> findMerchantByName(String name);
}
使用仓库
先注入 MerchantRepo 仓库:
@Autowired
MerchantRepository merchantRepo;
然后就可以持久化数据和查询操作了。
数据持久化:
/**
* 持久化数据
* 作者:栈长
* 来源公众号:Java技术栈
*/
@Bean
CommandLineRunner initData() {
return args -> {
// 清空数据
merchantRepo.deleteAll();
Merchant javastack1 = Merchant.of(
"javastack1", "https://javastack.cn", new Point(-122.066540, 37.377690), 526, 2011 //
);
javastack1.setTags(Set.of("fast", "scalable", "reliable"));
Merchant javastack2 = Merchant.of(
"javastack2", "https://javastack.cn", new Point(-122.124500, 47.640160), 182268, 1975 //
);
javastack2.setTags(Set.of("innovative", "reliable"));
// 持久化数据
merchantRepo.save(javastack1);
merchantRepo.save(javastack2);
};
}
数据查询:
/**
* 查找单个商户
* 作者:栈长
* 来源公众号:Java技术栈
*/
@GetMapping("name/{name}")
Optional<Merchant> byName(@PathVariable("name") String name) {
return merchantRepo.findMerchantByName(name);
}
Redis OM 全程都是通过对象的方式,更好的面向对象编程的思想,不需要多余的对象转换操作了。
总结
Redis OM 对象映射只是扩展了 Spring Data Redis,它不能脱离 Spring Data Redis,更不能脱离其他 Redis 客户端,它只是一个更高层级的抽象库而已,可以使我们更简单、方便的使用 Redis。
可以简单的说它是 Redis 界的 Hibernate,真香!
现在还是预览版,功能也不全,我们还是期待它的正式发布吧,栈长会第一时间跟进和体验分享。
更多的细节可以参考:
https://redis.com/blog/introducing-redis-om-client-libraries/
https://github.com/redis/redis-om-spring
好了,今天的分享就到这里了,后面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送,我也将主流 Java 面试题和参考答案都整理好了,在公众号后台回复关键字 "面试" 进行刷题。
最后,你觉得 Redis OM 怎么样?欢迎留言讨论!
这真是个好框架,欢迎转发、分享给更多 Javaer 小伙伴们吧!
版权声明: 本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,抄袭者一律举报+投诉,并保留追究其法律责任的权利。
面试官:Java 8 map 和 flatMap 的区别?你还在遍历搜索集合?Java 8 一行代码搞定!去了家新公司,技术总监不让用 IntelliJ IDEA!重磅!JDK 17 发布,正式免费。。别再到处 new 对象了,试试 3 大工厂模式!别再写满屏的 get & set 了,试试 MapStruct!推荐一款代码神器,代码量至少省一半!
Dozer 宣布停止维护,不要再用了。。
蚂蚁面试官:Zookeeper 的选举流程是怎样的?程序员精通各种技术体系,45岁求职难!
关注Java技术栈看更多干货